//:C07:VectorInsertAndErase.cpp
// Erasing an element from a vector.
// {L} Noisy
#include <algorithm>
#include <iterator>
#include <ostream>
#include <vector>
#include "Noisy.h"
using namespace std;

int main(void)
{
    vector<Noisy> v;
    v.reserve(11);
    cout << "11 spaces have been reserved" << endl;
    generate_n(back_inserter(v), 10, NoisyGen());
    ostream_iterator<Noisy> out(cout, " ");
    cout << endl;

    copy(v.begin(), v.end(), out);
    cout << "Inserting an element:" << endl;
    vector<Noisy>::iterator it = 
        v.begin() + v.size() / 2;    // Middle
    v.insert(it, Noisy());
    cout << endl;
    copy(v.begin(), v.end(), out);
    cout << "\nErasing an elemnt:" << endl;
    // Cannot user the previous value of it;
    it = v.begin() + v.size() / 2;
    v.erase(it);
    cout << endl;
    copy(v.begin(), v.end(), out);
    cout << endl;
}